home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-01-07 | 70.0 KB | 1,395 lines |
- NAV - Mutual Fund Performance Analyzer, Release 2.
- (c) Copyright 1996 Tekniq. All Rights Reserved.
-
- README date: 12/25/96
-
-
- NAV
- ---
-
- NAV is a DOS shareware program for mutual fund performance analysis, which:
- * displays and prints graphs of weekly mutual fund price changes
- * analyzes volatility and reward/risk
- * compares performance of funds over various time periods
- * calculates five types of moving averages and buy&sell signals
- NAV comes with up-to-date data on 330 US mutual funds and indices, and can also
- analyze data that you supply. Registered users receive weekly data updates.
-
- Try the program to decide if it is useful to you. If it is, send your:
- (1) name
- (2) US mail address
- (3) Email address
- (4) phone number(s)
- (5) the location from which you downloaded NAV
- (6) registration fee ($20), checks payable to Tekniq
- (state of Washington residents add 8.2% sales tax=$1.64)
- to:
- Tekniq
- PO Box 201
- Issaquah, WA 98027-0201
-
- Email: randyn@eskimo.com
- URL: http://www.eskimo.com/~randyn (beginners: download readme)
- FTP: ftp.eskimo.com, directory u/r/randyn
-
- It is important to register, as up-to-date data is available only to registered
- users via an encryption key. The key is changed periodically, and registered
- users are notified. It is also important to include your Email address, for
- fastest notification of new keys. Your responsibility as a registered user is
- to notify me if your US mail address, Email address, or phone number changes.
- If within the first two months of use you are not satisfied with the software,
- notify me for a refund. Feel free to share NAV (but not the key) with others,
- and encourage them to register.
-
- A set of data files current to December 1994 are available to help you evaluate
- the program. A few of the up-to-date data files can also be viewed, but the
- majority of the data sets require the encryption key. The program can also
- evaluate data that you supply in ASCII (unencrypted) text form. The key is a
- short ASCII string, like a password. Please do not share the key with friends,
- to save them the cost of becoming registered users, and please do not put the
- key on a network or public bulletin board. Instead, show others what the
- program can do, and encourage them to become registered users. I've set the
- registration fee low so anyone with a computer can afford it.
-
- "NAV" stands for Net Asset Value.
-
- Date current key was created: November 06, 1996 (Release 1)
-
- Dates previous keys were created: April 23, 1996 (beta test)
-
- Expected date next key will be created: January 01, 1997
-
-
- System Requirements
- -------------------
-
- NAV requires VGA video (640x480, 16 colors), DOS (Windows is not necessary,
- though it will run under Windows), and about 4 Megabytes of memory. If you have
- less than 4 Megabytes of memory, read the sections below on "Out of Memory",
- "Installing Device Drivers", "LIM.SYS", and "EMS.SYS" for a technique to
- emulate the needed memory. NAV itself uses only a small amount of memory, but a
- large amount of memory is required to hold the data for all the funds. A mouse
- will be used if present.
-
-
- Disclaimer
- ----------
-
- I try to provide accurate, up-to-date data on all the mutual funds and indices
- that I track, but I cannot guarantee accuracy. Use this information at your own
- risk. I am not responsible for financial decisions you make using this program
- and data. If you are going to make an investment decision, don't base it solely
- on this program and data; confirm it first with other sources of information.
- Then, only make the decision if you are willing to accept full responsibility
- for it.
-
-
- Other Mutual Fund Factors
- -------------------------
-
- NAV performs technical analysis on mutual funds, but there are other
- fundamental factors you should consider before selecting a mutual fund. Some of
- them are:
-
- (1) Portfolio manager. Who runs the fund? How long have they been in charge?
- If not long, were they in charge of another fund prior to that? How was their
- record? Some fund families attempt to hide their portfolio managers by stating
- their funds are run by a "team", the members of which they are loathe to name.
- They are attempting to nullify the effects of a future departure of a "star"
- manager, which can cause shareholder assets to be withdrawn, perhaps to follow
- the manager to their new location. How old are the portfolio managers? If they
- are 70 years old, you have to wonder how long they will continue to be on the
- job, even if they have an outstanding record. What if you invest, and they
- announce their retirement the next day?
-
- (2) Fund objective and market capitalization, as affected by asset growth due
- to popularity resulting from outstanding recent performance. Some funds that
- started out as smallcap funds (and built outstanding records with that market
- capitalization), are now midcap funds with several billion dollars of assets.
- In general, smallcap funds are most effective as smallcap funds when they
- remain relatively small (under a billion dollars of assets). If significant
- and rapid asset growth has occured, previous performance should be discounted.
- Also, be sure the fund invests in what you think it does. Some funds with "blue
- chip" in their name don't invest in blue chips, etc. Read the prospectus and
- annual report.
-
- (3) Management fees and loads. Expensive funds need to do that much better than
- efficiently run funds just to match their performance.
-
- (4) Turnover. Low turnover funds in general will not generate as much of a tax
- burden due to capital gains distributions.
-
- (5) Foreign exposure. Many domestic equity funds invest significant portions of
- their portfolios overseas. Be sure to consider this if the percent of foreign
- investments is an important part of your personal portfolio strategy.
-
-
- Location
- --------
-
- The files can be downloaded by anonymous FTP from host ftp.eskimo.com in
- directory ~randyn. Most are contained in NAV.ZIP, along with this README file,
- which serves as a user manual. Some are also available for separate download.
- Note that directory ~randyn will not be visible when you connect to the root
- directory at ftp.eskimo.com, but typing "cd ~randyn" will place you there.
- Alternatively, "cd u/r/randyn" will get you there too. They are also available
- on the world wide web at http://www.eskimo.com/~randyn.
-
- The files are:
- NAV.EXE Analysis program
- README Documentation (user manual)
- README.NEW Announcements of recent changes
- DATA.ZIP Data files (fund and index price histories), key encrypted
- 94.ZIP Data files, current to December 1994, default encrypted
- LIM.SYS LIM EMM (expanded memory) emulator
- XMS.SYS XMS (extended memory) emulator
- FUNDS List of the funds in DATA.ZIP
- A0.EXE Program to unencrypt .NAV files (default)
- A1.EXE Program to unencrypt .NAV files (key required)
- UPDATE.EXE Program to update .NAV files
- UPDATE.DAT Update data for .NAV files
- OPT New optimization values, if UPDATE.DAT is present
- NEWKEY.EXE Program to update files for a new encryption key
- X0.EXE Program to encrypt .NAV files (default)
- X1.EXE Program to encrypt .NAV files (key required)
-
- Also in that location is UNZ512X3.EXE, a self-extracting binary which contains
- UNZIP.EXE. If you need an unzip utility, I recommend you (1) create C:\UNZIP,
- (2) download UNZ512X3.EXE into it, (3) execute it to extract UNZIP.EXE, and
- (4) either copy UNZIP.EXE to a directory on your PATH, or put C:\UNZIP on your
- PATH. UNZIP is freeware; there is no fee for using it. Note that UNZ512X3.EXE
- contains a README file, so you do *not* want to unpack it in the same directory
- as NAV.ZIP (C:\NAV), or you will overwrite one README file with the other.
-
- There is a directory called Incoming which is available for uploading. For
- example, if you have acquired or created some data sets for mutual funds that
- aren't already present and you would like to have them added, upload them to
- Incoming and send me Email. Just use 'put' instead of 'get' in ftp.
-
- Note that eskimo is a linux system, and unlike DOS, letter case in filenames is
- significant. The file and directory names on eskimo will be in lowercase, and
- you need to type them that way to 'get' them. In this README, however, I'll use
- uppercase to make the names stand out. All files, including this README, should
- be retrieved using binary mode.
-
- If README.NEW is present, it contains announcements of recent changes, such as
- new features, key changes, and new data sets.
-
-
- An FTP Session
- --------------
-
- FTP stands for File Transfer Protocol, a way to transfer files across the
- Internet. Once logged onto a computer connected to the Internet, use the
- following commands (comments are enclosed in angle brackets <>):
-
- ftp ftp.eskimo.com
- <You'll be asked for a logon ID.>
- anonymous
- <You'll be asked for a password; use your Internet Email address.>
- joeblow@internet.com <Don't type this; fill in yours.>
- <You'll be logged on, and placed in the root directory.>
- <Passwords are not printed on the screen when you type them.>
- <If you do a 'dir' you will not see directory ~randyn, but
- execute the next command anyway. If it fails, cd to u/r/randyn.>
- cd ~randyn
- <Now you'll be at the right location; set file transfer to binary.>
- binary
- <To see what files are available, type "dir".>
- dir
- <Now download the file.>
- get nav.zip
- <Nav.zip is about 850K; when it's done, logoff.>
- bye
-
- That's it. Some Internet providers put you into a "user friendly" menu system
- when you dial into their machine via a modem. Usually there is a menu selection
- for starting a command shell, from which you can issue the ftp command. If not,
- there may be an ftp service menu selection. If you can't figure out how to ftp,
- ask your system administrator. If you don't have an Internet account or for
- some reason ftp is not available, it is going to be tough to keep your data
- up-to-date, as anonymous ftp is the primary way I plan to make current data
- available. After you use ftp to transfer NAV.ZIP from ftp.eskimo.com to your
- Internet Service Provider, download it to your local PC. If you don't know how
- to do that, ask your system administrator; usually your ISP will have a program
- you can invoke to transfer a file to your modem's terminal emulator program.
-
-
- Installation
- ------------
-
- Create a directory called NAV in the root directory of your hard disk, for
- example, C:\NAV, and place NAV.ZIP into it. Unpack with the command "UNZIP
- NAV". The UNZIP.EXE program is also available on ftp.eskimo.com (see above).
- This will unpack the files listed above. Then do "UNZIP DATA", which will
- create many .NAV files, and a file called OPT. The .NAV files each contain one
- data set, usually for a mutual fund, and are named by ticker symbols. For
- example, FMAGX.NAV contains data for Fidelity Magellan. Some of the .NAV files
- contain data for market indices, such as SP500.NAV, however I will refer to all
- data sets as "funds". NAV will look for its data files in the current
- directory, so leave them in the same directory, and execute NAV from there. OPT
- contains moving average values, and will usually be up-to-date. If not, NAV
- will generate a new OPT file.
-
- The simplest way to run NAV is to make C:\NAV the current directory and enter
- "NAV". This will cause NAV.EXE to execute, load in all the .NAV files, either
- calculate moving average values for each of them or fetch them from the OPT
- file, and display the data for you to evaluate.
-
- Most of the data is measured weekly, at the close of the week on either Friday
- or Sunday (which uses the previous Friday's closing price). The data also
- includes distributions for most funds. For some funds, the distribution data is
- represented explicitly and the price data is as reported on the given date; for
- others, the distribution data has been used to adjust the price data. The data
- also includes the fund name, and category ("growth", "bond", "international",
- etc.). Dates may also be present without corresponding prices; these are
- missing data. NAV handles these by interpolating from the previous and next
- known prices. Missing data points are represented by red dots when graphed
- (normal data are plotted with white dots). The data may also include
- information on share splits, which are rare for mutual funds, but do happen.
-
-
- DOS Functionality
- -----------------
-
- A prerequisite to using NAV (or any application software) is a basic
- understanding of how your computer, its hardware, and its operating system
- work. Read the manuals that come with your machine. There are plenty of books
- you can buy at any bookstore that explain how to use DOS or Windows. I'll help
- you use NAV if you have problems, but I won't answer questions like: "What does
- 'file not found' mean?", or "How do I copy a file?"
-
-
- KEY
- ---
-
- Once you have registered NAV and have the encryption key, there are three ways
- to use it:
- (1) Create an environment variable KEY. For example, add the following to
- AUTOEXEC.BAT: SET KEY=FOO
- (2) Create a file called KEY in the same directory as NAV.EXE, usually
- C:\NAV, containing the key on a line all by itself.
- (3) When you run NAV.EXE, pass the key to it: "NAV /KEY=FOO"
- Keys are case sensitive; FOO and foo are different. The key will be changed
- every six months, in January and July. Check near the top of README (this file)
- for the date the current key was created, and the expected date of the next
- key. Keys are limited to 32 characters, and cannot be blank.
-
-
- NEWKEY
- ------
-
- When an encryption key change is announced, you can use NEWKEY.EXE to update
- your data files to the new key. You should do this before you run UPDATE.EXE.
- NEWKEY will update the following files: OPT, UPDATE.DAT, *.NAV, KEY. NEWKEY
- takes one or two parameters. If the old key is contained in a KEY file or in a
- KEY= environment variable, you only need to give the new key, for example:
- NEWKEY BAR
- If you use the key by passing it to NAV on the command line ("NAV /KEY=FOO"),
- then you need to supply both the old and new keys to NEWKEY, for example:
- NEWKEY FOO BAR
- The first (optional) parameter is the old key and the second is the new key. If
- there is a KEY file, NEWKEY will update it. If there is a KEY= environment
- variable, NEWKEY will remind you to update it. If you download new OPT and
- UPDATE.DAT files (which use the new key) before running NEWKEY, it will tell
- you that they already use the new key, and they will not be changed. To
- reencrypt files, NEWKEY uses a temporary file called __NEWKEY.@@@, which is
- deleted before NEWKEY exits.
-
-
- Parameters
- ----------
-
- Usually you will run NAV.EXE with no parameters, other than perhaps /KEY=, and
- it will display the data for all .NAV files in the current directory (C:\NAV).
- If you wish to look at only one or a few .NAV files, you can give their names
- on the command line like this:
- NAV FMAGX
- which will only display Fidelity Magellan (the .NAV extension is implied), or:
- NAV F*.NAV
- which will display all .NAV files starting with F, which includes all Fidelity
- and Founders funds, and a few others.
-
- Giving a parameter of /UMA, /WMA, /EMA, /AMA, or /VIDYA will select the
- corresponding type of moving average to use for all funds (see Moving Averages
- below); this selection will be recorded in the OPT file. By default, NAV
- selects the type of moving average that is optimal for each fund.
-
- Giving a parameter of /OPT will cause it to calculate the optimal moving
- average values, and then exit (prior to running the interactive graphical
- portion of the program); this is useful in batch files when values must be
- recalculated but the interactive portion of the program is not needed. When
- running NAV in this fashion, it is useful to redirect output to a file:
- NAV /OPT >LOG
-
- Executing "NAV /HELP" will display the list of valid parameters. Giving a
- parameter of /REMA will cause NAV to reselect the optimal type of moving
- average for each fund; this is useful if all funds have been forced to use EMA,
- for example. Giving a parameter of /REOPT will cause NAV to recalculate all
- moving average values, and is equivalent to deleting the OPT file prior to
- running NAV.
-
-
- Data Updates
- ------------
-
- Normally I will update all funds with weekly closing prices by Sunday evening
- for the previous Friday market close. My ISP is difficult to dial into on
- Sunday evening, so I expect to upload fresh data every Monday morning. This is
- the plan; I don't guarantee it. I expect to be about 90% successful at getting
- the data available by Monday morning. I'll do my best to keep fresh data
- available, but I can't guarantee it. If you notice a missing distribution, let
- me know, as they are easy to miss. I don't know if distribution by anonymous
- FTP will be feasible; if you encounter unreasonable difficulties, let me know.
-
- Most of the data files will be updated weekly, but there are a few exceptions.
- The 44 Wall Street fund was merged into the 44 Wall Street Equity fund in
- mid-1993, so there will be no new data on it. (During 1996, the 44 Wall Street
- Equity fund was renamed to the Matterhorn Growth fund.) The S&P 500 dividend
- yield and P/E ratio data sets are updated only every few months, since I have
- to go to the library to get them. If you learn of an on-line source for those
- numbers, let me know. Currently the data sets for the Money Market yield and
- the CPI (Consumer Price Index) are updated on a yearly basis. I'm looking for a
- few more index data sets: the price of 1 oz of gold, the original yield at
- issue (not "price") of 30-year treasury bonds, and the inflation rate (CPI),
- going back to 1986. The current CPI numbers are yearly summaries; I'd prefer
- monthly or weekly data.
-
- NAV.ZIP is a large file (currently 850K), so I won't update it often. There is
- a separate DATA.ZIP available on ftp.eskimo.com, but it is over 750K, and
- tiresome to download every week. DATA.ZIP will be updated about every two
- months; it contains the complete price and distribution histories. Every week,
- a new UPDATE.DAT file will be placed on ftp.eskimo.com. When you see one with a
- date later than your last update, download it and run UPDATE.EXE. By default,
- UPDATE.EXE will use the information in UPDATE.DAT; if the update information is
- in a different file, you can supply the file name as an argument to UPDATE.EXE,
- for example:
- UPDATE NEWINFO.DAT
- UPDATE.DAT is encrypted, but UPDATE.EXE can read it, provided the key is
- available. UPDATE.EXE extracts the new data from UPDATE.DAT and appends it to
- the end of each of the encrypted .NAV files. If you try to apply the same
- changes twice, the .NAV files are not changed. When UPDATE.EXE adds information
- to a .NAV file, it will report the file name and new data. If your .NAV files
- have become significantly out of date, download the current DATA.ZIP and unzip
- it, then download UPDATE.DAT and run UPDATE.EXE. The plan is for all new price
- and distribution data to be accumulated in UPDATE.DAT over a period of a few
- months, after which a new DATA.ZIP will be generated with all changes included,
- and UPDATE.DAT will be deleted.
-
- Registration includes access to all files, plus the current encryption key.
- Registered users will also be notified of key changes. Registration does *not*
- include a guarantee that I will continue to provide weekly data updates
- forever, though my intent is to provide them for the foreseeable future. If the
- time comes when I'm no longer able (or no longer desire) to provide weekly data
- updates, I will try to find someone to take over that task. If I can't find
- someone, I'll offer a full or partial refund to recently registered users. As
- of 12/96, I've been doing weekly data updates for the last six years.
-
- Registered users have access to encryption and unencryption utilities (see
- below) which enable them to view the data in plain text (ASCII) format. If
- necessary, they can make modifications, corrections, or fill in missing data.
- The utilities are not to be used to resell or redistribute the data provided
- with NAV; that is prohibited. Registered users can use the data with other
- analysis programs, as long as they do not allow anyone else to access the data.
-
-
- Moving Averages
- ---------------
-
- NAV displays a number of statistics relating to fund performance, but its real
- job is calculating moving averages. These are trend curves which compare recent
- prices to historical behavior, and are used to make buy and sell decisions. NAV
- supports five moving averages:
-
- UMA - Unweighted Moving Average. This is calculated by adding the previous N
- prices and dividing by N. For example, let P[i] be the price at week i, and
- U4[i] be the 4-week UMA at week i. U4[5]=(P[1]+P[2]+P[3]+P[4])/4,
- U4[6]=(P[2]+P[3]+P[4]+P[5])/4, and so on. Window sizes range from 2 to 60, in
- increments of 2 (2,4,6,8,...). For U4[i] where i<5, use Uj[j+1] where j+1=i;
- that is, U4[1]=U0[1]=P[1], U4[2]=U1[2]=P[1], U4[3]=U2[3]=(P[1]+P[2])/2, and
- U4[4]=U3[4]=(P[1]+P[2]+P[3])/3. In other words, if there are not enough
- preceding points for the window size, use the largest window size possible that
- does have enough points.
-
- WMA - Weighted Moving Average. Similar to UMA, but gives more weight to recent
- price points. W4[5]=(P[1]+2*P[2]+3*P[3]+4*P[4])/(1+2+3+4). The most recent
- price point, P[4], receives four times the weight of the most distant price
- point, P[1]. Window sizes are the same as for UMA. Like UMA, Wi[k] for i>=k is
- defined as Wj[j+i] where j+1=i.
-
- EMA - Exponential Moving Average. The number of data points used to calculate
- UMA and WMA are called a "window size", but EMA has no fixed window size.
- Instead, E[i]=C*P[i]+(1-C)*E[i-1], and 0<C<1, and E[1]=P[1]. C is the
- coefficient, but for consistency with UMA and WMA we'll call it a weight. If
- C=.8 then a lot of weight (80%) is given to the current price point and
- relatively little (20%) to previous price points, which means the EMA will
- follow the price graph very closely. If C=.2 then a lot of weight is given to
- previous price points and relatively little to the current price point, which
- means the EMA will be a gradually moving curve that doesn't follow the price
- graph closely. Weights range from .10 to .80, in increments of .02 (.10,.12,
- .14,.16,...).
-
- AMA - Adaptive Moving Average. AMA has a window size, but only to calculate
- recent volatility. AMA is calculated in the following way: select a window
- size, between 2 and 30, inclusive, in increments of 2. calculate Direction,
- Volatility, and Efficiency Ratio (ER) per data point:
- Direction=Price[0]-Price[N]
- where Price[N] is the price N weeks ago. Price[0] is the current price.
- Volatility=sum from 1 to N of |Price[i-1]-Price[i]| (absolute values)
- ER=Direction/Volatility
- C=ER*ER
- Square ER to push small values toward zero; this keeps AMA from moving when
- there is no clear trend. C is the coefficient.
- AMA[0]=AMA[1]+C*(Price[0]-Price[1])
- where AMA[1] is for the immediately previous data point.
- In addition, there is an adjustment to C if it is detected that the price is
- creeping away from the AMA. This implementation of AMA is derived from Perry
- Kaufmann's book "Smarter Trading", McGraw-Hill, pp. 133-143. But the algorithm
- has been modified in several ways.
-
- VIDYA - Variable Index Dynamic Average. VIDYA is calculated in the following
- way: select a window size between 2 weeks and 20 weeks, inclusive, in
- increments of 2, and a primary weight between .10 and Max, inclusive, in
- increments of .02. Max is determined by the algorithm. The window size is used
- to calculate the volatility index for each data point:
- K=Sigma(X-days)/Sigma(Reference)
- where Sigma is a function that measures volatility. For Sigma, NAV uses
- a sum of the price changes over the last X days.
- The reference value represents the normal value of Sigma across the data set;
- NAV uses an approximation of the average of Sigma across all valid data points
- for Sigma(Reference). The following conditions occur:
- when K=1, volatility is "normal"
- when K<1, volatility is "low"
- when K>1, volatility is "high"
- Next, determine the maximum value of Wt (primary weight) by: K*Wt<1 -> Wt<1/K.
- After 1/K is calculated, subtract .01 and assign the value to Max. Now:
- VIDYA=K*Wt*C0 + (1-K*Wt)*V1
- where C0 is today's price and V1 is yesterday's VIDYA. Wt is the EMA
- coefficient and K is the volatility index.
- This implementation of VIDYA is based on "The New Technical Trader", by Tushar
- Chande and Stanley Kroll, Wiley, pp. 49-72. The one difference is that Chande
- and Kroll use VIDYA=K*Wt*C0+(1-K*Wt)*C1, where C1 is yesterday's price. V1
- seems to give slightly better results.
-
- AMA and VIDYA are adaptive, in the sense that they try to capture the concept
- of fluctuating volatilty. When volatility is low, they move very slowly. When
- volatility increases, they move more quickly to "catch up" with the trend.
-
- NAV can use any of these moving averages (but only one at a time) for each
- fund; by default NAV will try them all, and select the one that gives the best
- result over the eval period (see Trial and Eval Periods, below). Once a moving
- average type has been selected, NAV will continue to use it for the fund until
- either the eval period changes (a new year is started), or it is changed
- manually by the user. The /REMA switch can be used to reselect optimal moving
- averages, or the Y key.
-
- The buy and sell signals generated by NAV are offset from the moving average
- by buy and sell thresholds. To generate a signal, the price must meet or
- exceed the moving average plus the threshold. For example, "EMA .64 (+3-5)"
- means the coefficient (weight) is .64, a buy signal is generated when
- P[i]>=1.03*E[i], and a sell signal is generated when P[i]<=.95*E[i]. The
- positive number is the buy threshold and the negative number is the sell
- threshold. So for a buy signal to be generated, the price must meet or exceed
- the moving average by 3%, and for a sell signal to be generated, the price must
- meet or fall below the moving average by 5%. "UMA 12 (+1-0)" means the
- unweighted window size is 12 data points (usually weeks), a buy signal is
- generated when P[i]>=1.01*U[i], and a sell signal is generated when P[i]<U[i].
- It is possible for threshold values to be zero, in which case crossing the
- moving average will generate the signal immediately. But for a zero threshold,
- the price must cross, not just meet, the average; this is to eliminate the
- special case of (+0-0) and a price which hits the average exactly triggers
- simultaneous buy and sell signals. Buy and sell thresholds can range from 0% to
- 10%.
-
- NAV will calculate the best values for window size, weight, buy and sell
- thresholds. "Best" is defined as the values which give the greatest investment
- value at the end of the trial period, or at the end of the last data point if
- there are no separate trial and eval periods (see below).
-
- NAV will accept a parameter to indicate which moving average to use. Executing
- "NAV /UMA" will cause NAV to use the Unweighted Moving Average for all funds.
- Similarly, parameters of "/WMA" and "/EMA" can be used to set the moving
- average to Weighted or Exponential. "/AMA" and "/VIDYA" set the moving average
- to Adaptive and Variable Index Dynamic Average, respectively.
-
- Whipsaws are buy and sell signals that occur very close to each other. To
- discourage selection of values that cause many whipsaw signals, NAV penalizes
- the values that tend to cause them, thus favoring those that don't. The penalty
- consists of subtracting a certain percentage of net assets proportional to how
- close the whipsaw signals are. For example, .9% is subtracted for signals that
- are 1 week apart, and .1% is subtracted for signals that are 9 weeks apart. No
- penalty is assessed for signals that are 10 or more weeks apart.
-
- Moving averages don't mean anything for data sets that do not represent prices,
- such as the S&P 500 P/E ratio and dividend yield.
-
- NAV does not adjust for loads; the price histories are as reported in the
- newspaper.
-
-
- Accuracy
- --------
-
- You should treat the results of running NAV as a very good approximation of the
- real world. Don't expect the yearly results to match numbers in prospectuses,
- ads, or newsletters. NAV data is typically sampled once a week, on Friday or
- the weekend. Also, some distributions are recorded on X-dividend dates, but
- reinvestment is not calculated until the next Friday/weekend day, so there will
- be a small amount of error. To be more accurate, the NAV on the X-dividend date
- should be present, but this is not available for all of the current data sets.
- The more accurate method is used for most distributions paid in 1996 and later,
- but not for most prior data.
-
-
- Reading in the Data
- -------------------
-
- When you run NAV, the first thing you'll see is the copyright, followed by an
- indication of whether LIM or XMS memory is available, and how much. Then, NAV
- will report how many funds it is reading, and it will start the first read
- pass. During the first read pass, the size of various data structures is
- determined, but only a few data items are stored. As each fund is read, a dot
- will be written to the screen. Eighty dots will fit on one line, so you can
- estimate how far along the reading pass is. After completing the first read
- pass, NAV will allocate memory to store the data. Then it will execute the
- second read pass, during which data is stored, and again a dot will be written
- for each. After the second read pass, NAV reports how much memory was used, and
- the time it took to load the data. The memory may be "FAR" which means
- conventional, or "UMB" which means XMS Upper Memory Blocks, or "HMA" which
- means the XMS High Memory Area, or "EMB" which means XMS Extended Memory
- Blocks, or "LIM" which means Lotus-Intel-Microsoft expanded memory. The numbers
- are in bytes.
-
-
- Calculating Moving Average Values
- ---------------------------------
-
- Following the data input sequence, NAV will start calculating optimal moving
- average values. You'll see output such as the following for each fund:
-
- EBENEZER SCROOGE FUND time=:29
-
- Each fund name is reported, along with the amount of time it took to calculate
- the optimal moving average values, if longer than one second. The values
- themselves are not reported at this time, but are visible in the upper
- right-hand corner of each fund graph in the analysis screen, if M is pressed to
- see the moving average. They will look like this:
-
- EMA .46 (+2-4)
-
- In this case, an exponential moving average is used, with a weight of .46 and
- buy and sell thresholds of +2% and -4% respectively. After all funds have been
- optimized, the total amount of time to optimize all the funds will be reported,
- then you'll be asked to press Enter. Once you do, you'll be flipping between
- the select screen and the analysis screen to view and analyze the data.
-
-
- Trial and Eval Periods
- ----------------------
-
- Before calculating moving average values, NAV will try to separate the price
- data for each fund into two parts: the trial period and the eval period. The
- idea is to use only the trial period data to form the moving average values,
- and then apply the values to the eval period data. NAV determines the most
- recent whole year for which data is available. This, plus any trailing partial
- year, will be the eval period, if at least 100 data points precede it (they
- become the trial period). A whole year must begin in the first week of January,
- and end in the last week of December. If a whole year cannot be found, or there
- are less than 100 prior data points, then there is no eval period, and the
- entire price history is put in the trial period. Examples: for a fund with data
- from 2/3/95 to 4/20/96 there is no eval period, because there is no whole
- calendar year present. For a fund with data from 11/14/94 to 4/20/96 there is
- no eval period, because while calendar year 1995 is present, there are not 100
- data points that precede it. For a fund with data from 9/2/88 to 4/20/96 the
- eval period starts on 1/1/95 and includes both calendar year 1995 and ytd 1996.
-
- Moving averages are most useful if there are separate trial and eval periods.
- This is because the moving average values must be calculated over the trial
- period, and then applied to the eval period. If the same data points are used
- to both calculate and also apply the values, the results will be subject to
- "overfitting". That is, the algorithm "cheats" by allowing itself to select
- values which optimize the equations over all the data. To be fair, the
- algorithm should use only part of the data to calculate the values, allowing
- you to evaluate the performance over an independent period. In this sense,
- "performance" applies to the moving average values, and therefore the algorithm
- that calculates them. When moving averages are graphed (by pressing M in the
- analysis screen), you will see a vertical blue line separating the trial period
- from the eval period. If the line is not present, then there are no separate
- trial and eval periods, and the moving average is affected by overfitting. Such
- a moving average can change with each new data point that is added; therefore,
- don't use it to make buy/sell decisions until enough data has accumulated to
- form separate trial and eval periods. Overfit moving averages can still be
- somewhat useful in showing how the algorithm is selecting moving average
- values.
-
-
- OPT
- ---
-
- The OPT file is generated by NAV, and contains moving average values, such as
- window sizes, weights, and buy and sell thresholds. It also contains
- information about each fund, such as the number of data points and the first
- eval period date, so NAV can determine whether the values are up-to-date. If a
- .NAV file has grown (added new data points) since the last time an OPT entry
- was generated for it, the values may need to be recalculated. This will depend
- on whether an eval period exists for the fund, and whether the eval period
- matches the one in OPT. For funds which have an eval period, adding one or a
- few new data points will usually not trigger a recalculation of moving average
- values. But once the first date of a new year is added, the eval period will be
- moved forward by one year, and a recalculation is necessary. Usually this will
- be done by me, not you, so you will seldom if ever be required to wait for a
- lengthy recalculation to complete. Funds which do not have an eval period must
- be recalculated when any new data is added. If you ever suspect that OPT does
- not contain optimal values, delete it and NAV will recreate it automatically.
- Or you can use the /REOPT switch, or the O key. On my system, a 386/25Mhz, it
- takes six hours to calculate a fresh OPT file. NAV will look for OPT in the
- current directory. OPT is an encrypted file.
-
-
- Select and Analysis Screens
- ---------------------------
-
- Once NAV has loaded the data and displayed the moving average values, it will
- ask you to press Enter to continue. When you do, NAV will switch to full-screen
- graphics mode. After that, NAV will switch between two screens, called the
- select screen and the analysis screen. Press Enter to switch between these two
- screens. Pressing Q in either screen will quit (exit) the program, after asking
- you to confirm.
-
- The select screen displays a color-coded list of funds, a cursor box, a
- mini-graph (upper right-hand corner), and a category color legend (lower
- right-hand corner). You can move the cursor box up and down the list with the
- UpArrow and DownArrow keys, or the PageUp and PageDown keys, or by clicking on
- the fund you want with a mouse. The Home and End keys will move the cursor to
- the top or bottom of the list, respectively. To select a fund with the
- keyboard, position the cursor box over it and press the Space bar. A red
- checkmark will appear to the left of selected funds. When one or more funds
- have been selected, press Enter to switch to the analysis screen for a more
- detailed look at the selected funds. If you press Enter before selecting any
- funds, the fund that the cursor is on is automatically selected before
- switching to the analysis screen; after returning to the select screen, it will
- be automatically deselected. While in the select screen, the mini-graph will
- display a simplified graph of the data for the fund in the cursor box.
-
- The color used for the fund name is based on the type of the fund; aggressive
- growth funds are shown in light pink, international funds in bright pink,
- growth funds in red, and so on. Indices, which may not be funds, are shown in
- purple. A fund that has not been assigned to a category will appear in white,
- at the bottom of the list. Normally funds are grouped by category, and
- alphabetically within each category, but pressing C will disable the category
- sort, so they are listed alphabetically without regard to category. Pressing C
- again will restore the category grouping. Fund names are limited to 40 letters
- in length, so long names are truncated. Note that funds placed into your
- portfolio (see below, the S (Select) key) will be in a category near the bottom
- of the list, if portfolio grouping (the G key) is enabled.
-
- The analysis screen displays the selected funds in detail. If only one fund is
- selected, it will fill the entire screen. If two funds are selected, each will
- get half the screen, and so forth. There is no limit to the number of funds you
- can select, but you will find that it is difficult to view the graphs if there
- are more than two of them. The bottom axis is time, earliest dates on the left,
- most recent on the right. The vertical axis is money, and is scaled according
- to each fund. If more than one fund is present, it will be scaled for all funds
- according to the maximum of all of them. Statistics are displayed in the upper
- left-hand corner. The yearly returns, including year-to-date (ytd) are shown,
- as is the total return over the entire time period (annualized), and the 1-,
- 3-, 5-, and 10-year averages (annualized, relative to the most recent date).
- Negative percentages are enclosed in parentheses. These are all in the first
- column.
-
- Yearly returns start on the last data point for the previous year (or if that
- cannot be found, the first data point for the current year, as long as it is
- within the first week of the year), and end with the last data point for the
- current year (which must be in the last week of the year; that is, between
- December 25 and December 31, inclusive). Year-to-date is also calculated from
- the last data point of the previous year, as long as it is within the last week
- of the year; if that data point cannot be found, the first data point of the
- current year is used, as long as it is within the first week of the year; if
- that also cannot be found, but there is preceding data, then no valid ytd
- calculation can be made. If you notice some yearly or ytd calculations are
- missing, it is because valid beginning and ending data points cannot be found.
- The program logic to figure this out is very complicated, so if you notice
- problems, please let me know, and send example data to demonstrate the problem.
-
- In the second column, the following are shown: volatility, reward/risk ratio,
- best returns, nav and dist summaries, and tax efficiency. Volatility is the
- standard deviation of the quarterly returns; it may be misleadingly low for
- funds with short histories. The reward/risk ratio is the return divided by the
- volatility. If the fund has a long enough history to have a 3-, 5-, or 10-year
- return, the longest of these is used. Otherwise, the total start-to-end return
- is used. I look for funds with a reward/risk ratio of 2.0 or above. Another way
- of interpreting the reward/risk ratio is whether the risk being taken
- (volatility) is sufficiently compensated for by the return. The best return is
- the annualized result of following the best moving average values; they will be
- for the entire fund unless it is long enough to be divided into trial and eval
- periods. If it does have separate trial and eval periods, there will be a set
- of best values, one for each period. The nav summary shows the absolute change
- in nav from first to last data point, and the dist summary shows the total
- amount of distributions per share from first to last data point. The nav and
- dist summaries are used to calculate tax efficiency, which is the percentage
- gain retained in the share price. Say that a fund gains $10 per share and pays
- out $8 total distributions per share; the tax efficiency is 55.6%, since $10
- out of a total $18 gain was retained in the share price. Use this statistic to
- determine which funds to place in tax-deferred accounts, such as IRAs or
- 401(K)s.
-
-
- Tax Efficiency
- --------------
-
- Some of my sources of data do not provide distribution data explicitly;
- instead, they use the distributions to adjust the price history, and then throw
- the distributions away. This is fine for reflecting the true performance of the
- fund (ignoring taxes), but it loses important information. You cannot tell how
- much of a tax burden the fund has created, year to year. For this reason, some
- of the .NAV files have "excluded" regions. The purpose of these regions is to
- exclude certain time periods from the tax efficiency calculation, since they
- include price data that has been adjusted for distributions.
-
- Go into the select screen, and move the cursor box to Fidelity Value in the
- list of growth funds, then press Enter to switch to the analysis screen. Press
- D to see the distribution graph. This is an example of a fund for which all the
- distributions are present; Fidelity Value pays distributions in December of
- each year. Now press Enter to go back to the select screen, move the cursor box
- to Longleaf Partners, and press Enter to switch to the analysis screen. You
- will see in the distribution graph that there are distributions from December
- 1995 on, but none previous. This fund pays a distribution every year, just like
- Fidelity Value, but because the data for this fund comes from a source that
- uses the distributions to adjust the price history, the distributions are not
- present. The tax efficiency is still correct, however, because the adjusted
- region has been excluded from the tax efficiency calculation. Once I acquire a
- data set and start maintaining it, I maintain the distributions explicitly.
-
- Tax efficiency will be meaningless for indices such as the S&P 500, or DJIA.
-
-
- Logarithmic Graphs
- ------------------
-
- The vertical (money) axis for both the mini-graph in the select screen and the
- main fund graph in the analysis screen is logarithmic. Traditionally, the
- vertical axis for financial/investment graphs is logarithmic, so that steady
- rates of return and the effects of compounding result in a straight line. You
- can change between logarithmic and linear money axis with L key. "LOG" or "LIN"
- will appear in bright pink in the upper right-hand corner of the screen (in
- both the select screen and the analysis screen) to indicate which mode is
- active. The distribution graph is always linear, in cents per share.
-
-
- Mouse
- -----
-
- If your computer has a Microsoft-compatible mouse, NAV will use it for several
- functions. In the select screen, you can use the mouse to click on fund names
- to select or deselect them. In the analysis screen, you can use the mouse to
- test various date and price points on the fund graphs, and to see performance
- over various periods. Moving the mouse around will display the date and value
- at the tip of the mouse pointer. Clicking once will fix one endpoint of a line
- that you can stretch out ("rubber band"). When the mouse is over the desired
- second endpoint, clicking a second time will fix it in place. The endpoint
- values and the performance over the period are reported in bright pink in the
- third column in the upper left of the fund graph. Use this to determine
- approximate fund performance over arbitrary or non-standard timeframes.
- Clicking a third time will erase the line, and start over. A line segment must
- be contained in one fund graph to be meaningful.
-
-
- Zoom
- ----
-
- Sometimes it is difficult to see the detail of current price moves if the
- history gets long, and recent prices are squeezed up against the right-hand
- axis. To "zoom" in on the last full year, plus the current ytd, press Z. To
- unzoom, press Z again. Zoom is a global setting, and will affect the mini-graph
- in the select screen as well as the full graph in the analysis screen. When
- zoom is active, the letter Z in bright pink will appear in the upper right-hand
- corner of the screen (in both the select screen and the analysis screen).
-
-
- A $1 Investment
- ---------------
-
- Since all mutual funds and indices have different share prices, NAV puts them
- all on the same scale by "investing" $1 in each of them on the earliest date
- for which there is data, and following what happens to the $1 investment as the
- share price fluctuates, distributions are paid (and reinvested), and share
- splits occur. This is why the graphs for all funds start at $1 on the
- left-hand vertical axis.
-
-
- Select Screen Bars
- ------------------
-
- Initially, the select screen displays a mini-graph, a category color legend,
- and a list of the fund names, alphabetized within each category. However,
- there are various bar charts that can replace the mini-graph and category color
- legend. Pressing each key a second time will change back to the mini-graph and
- legend. Each bar chart is sorted from longest bar to shortest, except for
- volatility, which is sorted from shortest to longest. The length of each bar
- corresponds to the value of the statistic associated with each fund. Note that
- the charts corresponding to returns can be negative; they will have a bar
- extending to the left rather than to the right. Volatility and tax efficiency
- by definition cannot be negative. For funds not long enough to have a given
- return, the bar length will be 0. The type of bar chart being displayed is
- reported near the end of the top (copyright) line.
-
- V - Volatility
- R - Reward/risk
- T - Total return
- Y - Year-to-date
- X - taX efficiency
- 1 - 1-year return
- 3 - 3-year return
- 5 - 5-year return (note: many funds don't have 5 years of data)
- 0 - 10-year return (note: few funds have 10 years of data)
-
-
- Keys
- ----
-
- Valid keys for select screen:
- Enter - switch to analysis screen
- Space - select/unselect current fund
- S - Select/unSelect current fund for portfolio
- G - Group/unGroup portfolio funds
- UpArrow, PageUp, Home - move cursor box up
- DownArrow, PageDown, End - move cursor box down
- V - toggle Volatility bars
- R - toggle Reward/risk bars
- T - toggle Total return bars
- Y - toggle Ytd return bars
- X - toggle taX efficiency bars
- C - toggle Category sort order
- 1,3,5,0 - toggle 1-, 3-, 5-, and 10-year return bars
- (note: many funds don't have 5 years of data; few funds have 10 years)
-
- Valid keys for analysis screen:
- Enter - switch to select screen
- UpArrow - move to previous fund
- DownArrow - move to next fund
- D - toggle Distribution information
- M - toggle Moving average information
-
- Valid keys for either screen:
- U,W,E,A,B - use Unweighted/Weighted/Exponential/Adaptive/Variable Moving
- Average
- O - recalculate Optimal moving average values
- Y - reselect optimal moving average type
- P - Print screen
- Z - toggle Zoom
- L - toggle Logarithmic/Linear money axis
- H,?,F1 - display Help screen
- ! - execute COMMAND.COM
- Q - Quit
-
-
- Cursor Box
- ----------
-
- When in the select screen, the UpArrow and DownArrow keys cause the cursor box
- to move up and down. The PageUp key will cause the cursor box to move to the
- top of the page if it is not already there, or to the top of the previous page
- if it is. Similarly, the PageDown key will cause the cursor box to move to the
- bottom of the page if it is not already there, or to the bottom of the next
- page if it is. The UpArrow and DownArrow keys can also be used in the analysis
- screen to cycle through the funds, as long as there is only one fund selected.
- The Home and End keys will move the cursor box to the top or bottom of the
- list, respectively.
-
-
- Viewing Distributions
- ---------------------
-
- The default is to not view distributions. If you are in the analysis screen,
- press D and the distributions will be displayed in a small graph below the
- price data. Press D again and the distribution graph will be removed. The
- distributions are shown broken down by long-term capital gains (blue) and
- dividends plus short-term capital gains (red). Dividends are grouped with
- short-term capital gains since they are taxed at the same rate. The percent
- breakdown is shown in the upper left hand corner of the distribution graph.
- The vertical white line shows the cumulative previous distributions, and the
- vertical axis is in dollars per share.
-
-
- Viewing Moving Averages
- -----------------------
-
- The screen can get cluttered when moving averages are displayed, so by default
- they are not. Select a fund, such as Fidelity Magellan, and switch to the
- analysis screen. Then press M. This will turn on the "best" moving average. The
- blue price line will be overlaid with the peach moving average curve. Above and
- below the moving average curve are sequences of dots which show the buy and
- sell thresholds. When a buy signal occurs, a green balloon points to it. A red
- balloon points to a sell signal. The performance of an actual investment
- following the signals is shown in green, and reported in the statistics. The
- blue vertical line at the beginning of the last complete calendar year shows
- where the trial period ends and the eval period begins. The investment amount
- is resynchronized to the actual price value on that date.
-
- There is also a white dot on the blue eval period border, and one on the most
- recent date; these show where the "average" investment (driven by buy and sell
- signals) would end up at the end of each period. To calculate the optimal
- moving average values, NAV calculates every possible combination of values, and
- saves the one which gives the best final investment value. While it is doing
- this, it sums the investment results of every combination, and divides by the
- number of combinations to form the average.
-
- When not "invested" in the fund, it is assumed that you are "invested" in a
- money market account. NAV has data which tells how much interest you would earn
- by "parking" your investment in a money market account, as a yearly average,
- which is a reasonable approximation. The data comes from the Vanguard Money
- Market Prime Reserves (a very typical money market fund), and from 3-month
- T-Bill rates.
-
- Pressing M again will erase the moving average, and display the price graph.
- Clutter can be reduced if you zoom in on the eval period.
-
-
- Changing a Moving Average
- -------------------------
-
- You can try any of the three types of moving average whenever you want. If
- you're looking at a price graph using EMA and you'd like to see UMA, just
- press U. The moving average values will be calculated, and you'll be asked to
- press Enter to continue. Once you set a different moving average for a fund, it
- will be remembered as the "preferred" moving average, until either another
- moving average is selected or the OPT file is deleted or overwritten. Pressing
- W will select WMA, and pressing E will select EMA. Pressing A will select AMA,
- and pressing B will select VIDYA. If you are in the analysis screen, the moving
- average will be selected for all funds being displayed. If you are in the
- select screen, the moving average will be selected for all funds in the list.
-
-
- Portfolio of Funds
- ------------------
-
- You can form a portfolio of funds with NAV. In the select screen, position the
- cursor box over the desired fund, and press S. This will select the fund for
- inclusion in the portfolio. Once a fund is in the portfolio, pressing S again
- removes it. By default, portfolio funds remain in their categories, but are
- indicated by a light yellow block which appears to the left of their name. But
- pressing G will cause all portfolio funds to be grouped together in a portfolio
- category near the bottom of the fund list. Pressing G again will remove the
- portfolio category, and place the portfolio funds back in their original
- categories. Putting the funds you invest in into a portfolio will help you
- compare their performance to their peers, and also to each other. It is most
- useful when viewing the Y,1,3,5, etc bar charts. Note: if you have portfolio
- category grouping enabled, it can be confusing to select a portfolio fund and
- see it immediately disappear from its category group. Remember that it was
- moved to the portfolio category, which may be several screens down the list.
- The portfolio funds are recorded in a file called PRTFOLIO, and readded to the
- portfolio the next time you run NAV. If you want to remove the portfolio and
- start again, just delete PRTFOLIO. The state of the portfolio category grouping
- variable is also recorded in PRTFOLIO. If a portfolio change is made while NAV
- is running, it will write out a new PRTFOLIO file before exiting.
-
-
- Printing the Screen
- -------------------
-
- If you have an HP laserjet compatible printer connected to your LPT1: port,
- just press P in either the select screen or the analysis screen to send an
- image of it to the printer. Sending data to non-existent printers can sometimes
- hang the computer, so you'll be asked to confirm before the data is sent.
-
-
- Help
- ----
-
- Pressing H or ? or F1 will display a help screen showing what the various
- keystrokes do. Help in the select screen is different from help in the analysis
- screen, because the valid keystrokes for each screen are different. On the
- second line of each screen (just below the copyright line) is one line of help
- on the most common keystrokes available in each screen.
-
- Select screen help:
- ENTER=ANALYSIS SPACE=SELECT S,G=PORTFOLIO BARS=Y,V,R,T,X,1,3,5,0 H=HELP
-
- Analysis screen help:
- ENTER=SELECT M=MOVINGAVG D=DIST P=PRINT Z=ZOOM H=HELP
-
-
- Executing COMMAND.COM
- ---------------------
-
- If you want to execute DOS commands, press ! to execute COMMAND.COM. NAV will
- remain in memory, and when you execute "EXIT", COMMAND.COM will exit, and
- you'll be returned to NAV. For this to work, the COMSPEC environment variable
- must be set to the full path location of COMMAND.COM. While executing
- COMMAND.COM, the PROMPT will be modified with the prefix "[NAV]" to remind you
- that NAV is present in memory. Also, NAV saves the current directory prior to
- executing COMMAND.COM, and restores it after COMMAND.COM exits.
-
-
- Quit
- ----
-
- Pressing Q will cause NAV to exit, but only after you've confirmed that you
- really want to exit.
-
-
- Maximum Data Sizes
- ------------------
-
- There is no fixed limit on the number of funds that can be analyzed, but each
- fund is limited to 64K of price data. The number of unique dates across all
- funds is limited to 32768; with the current set of funds, there are less than
- 1500 unique dates, so the limit is a long way off. My own view on the length of
- the price histories is that approximately seven years of data is the best. With
- less than that, the confidence level is not so high that the moving average
- values have accurately captured the behavior trends. With more than that, it is
- possible that the moving average values are trying to capture several different
- types of behavior patterns. For instance, manager changes or objective changes
- can easily occur in long price histories. Fidelity in particular moves
- portfolio managers around among their funds. Significant asset growth in a fund
- can change the behavior trends too.
-
-
- Dates
- -----
-
- NAV is written so that the earliest year it can handle is 1960. Since dates in
- .NAV files are specified by two digits, this means NAV can handle anything from
- January 1, 1960 up to December 31, 2059. To enter dates such as 1/1/2000 use
- the form: "1/1/00". The earliest date used in the current set of .NAV files is
- 1/1/86. To keep columns lined up in the data files, dates can have leading
- zeros, such as "01/01/00"; NAV will ignore the leading zeros.
-
-
- Memory Allocation
- -----------------
-
- NAV stores several different kinds of data for each fund, but by far the
- largest is the price data. NAV prefers to store the price data in HMA memory,
- conventional (FAR) memory, and then UMB memory, and will store the smallest
- funds first. If not all the data fits, LIM memory will be used next, if it
- exists. EMB is the least preferred type of memory, because it requires a swap
- space to be allocated to access the data. If EMB is needed (and available), NAV
- goes through the laborious process of deallocating everything it has allocated
- up to that point, allocating a swap space big enough to swap in the largest
- fund, and then restarting the allocation process. If all of this is done and
- there is *still* not enough memory to store all the data, NAV attempts to limp
- along with as much data as will fit in memory. The swap space can be in HMA,
- UMB, or conventional memory. If NAV has to use LIM or EMB memory, it reorders
- the remainder of the funds to store the largest one first, so that LIM and EMB
- memory, which are handled in 16K and 64K chunks, respectively, are used most
- efficiently.
-
-
- The SETTINGS File
- -----------------
-
- By default:
- Zoom is turned off
- Vertical axis in analysis screen is logarithmic
- Moving average is not shown
- Distributions are not shown
- Funds are sorted into categories
- If any of these values are changed, the new values are recorded in the SETTINGS
- file, so that when NAV is run again, the same values are used. This keeps NAV
- looking the same from one run to the next.
-
-
- 94.ZIP
- ------
-
- If you are not a registered user and you run NAV on the .NAV files in DATA.ZIP
- with no encryption key, you will get a lot of warnings about data files that
- are not accessible. However, at least one fund from each category (growth,
- bond, international, etc) is encrypted in such a way that NAV can still access
- the data. If, however, you'd like to see NAV handle a much larger group of
- data files, download 94.ZIP, unpack the .NAV files in 94.ZIP, and run NAV on
- them. They contain most of the funds from DATA.ZIP, but only current through
- the end of 1994 (there are fewer data files in 94.ZIP because some funds do not
- have data prior to 1/1/95). This will show you what NAV can do with 294 funds.
- Don't get the .NAV files from 94.ZIP mixed up with those from DATA.ZIP. Before
- you unzip 94.ZIP, delete all the .NAV files that came from DATA.ZIP, otherwise
- you'll have some .NAV files from each collection, and it will be confusing. The
- .NAV files contained in 94.ZIP are encrypted in such a way that NAV can read
- them even without a key (they can all be decrypted with A0.EXE; see below).
- After you evaluate NAV with them and become a registered user, you will never
- need 94.ZIP again.
-
-
- Good and Bad Funds
- ------------------
-
- How were the funds in DATA.ZIP selected? For most of them, they were selected
- because they fit my criteria as worthwhile potential investments. I lean toward
- low or noload funds with low total expenses, long-term, experienced management,
- and consistently good long-term performance. But you'll also find some
- outstanding load funds, and some newer funds too. You'll also find some of the
- worst funds, which were specially selected to demonstrate not only the best,
- but also the worst that you can find in the mutual fund universe. Some of these
- are:
- American Heritage
- Steadman American Industry
- Comstock Capital Value A
- Pathfinder (was: Prudent Speculator)
- 44 Wall Street
- Mathers
-
- There are also some funds included for their extreme volatility, such as
- Lexington Strategic. Don't take the mere presence of data for a fund as an
- indication that it is a good investment.
-
- The purpose of these funds is for comparison with other funds to evaluate
- potential investments. You won't find many bond funds, because they are
- difficult for me to maintain up-to-date data for. Bond funds pay dividends all
- the time, and it is hard for me to gather and maintain extensive distribution
- histories for them.
-
-
- Incorrect Data
- --------------
-
- If you find data which is not correct, such as missing distributions, let me
- know. If you can supply the missing/correct data, that is an added plus. Say
- for example Fidelity Value, which as a typical largecap growth fund normally
- pays distributions once a year in December, pays an additional distribution in
- April. There is a good chance I will miss it, as I would normally not check for
- a distribution until December (or January). You can determine if a distribution
- is missing by viewing the distribution graph. Often a sharp, unexpected drop in
- the NAV value will also indicate a missing distribution; but if the drop is not
- sharp, it may be overlooked.
-
-
- Out of Memory
- -------------
-
- If you don't have at least a couple Megabytes of free expanded (LIM) or
- extended (XMS) memory, you'll get an error message that NAV couldn't get
- enough memory to store all the data. To view all the data, consider installing
- a memory emulator, either LIM.SYS or XMS.SYS. Each will provide 8 Megabytes of
- emulated memory by paging it to a disk file. Currently the data will require
- 2.5 Megabytes of memory. Many .NAV files contain data from 9/88 to present
- (10/96), about 400 data points. On a 386/25Mhz, it takes about 90 seconds per
- fund to calculate the best moving average values. To do all files takes about
- six hours. If all the values are available in OPT, loading the data and
- applying the moving average values will take about ten minutes. When running
- with a memory emulator, performance will be noticeably slower, and you'll see a
- lot of disk activity as memory is read from and written to the emulation files,
- but at least you're running (and seeing all the data)! I have a machine with
- 1 Megabyte of memory, so I use XMS.SYS all the time. NAV will try to limp along
- even if there is not enough memory to hold all the data, but if NAV cannot get
- enough memory to store a few critical data structures, there is no point in
- continuing, and NAV exits with an error message.
-
-
- Installing Device Drivers
- -------------------------
-
- To avoid the nasty situation of installing a device driver in C:\CONFIG.SYS,
- having it malfunction, and being unable to remove it, do the following.
- Prepare a boot disk by putting a blank disk in A: and executing "FORMAT A: /S".
- This will create a boot disk. Check to make sure COMMAND.COM was copied to A:.
- If not, copy it there. All newer versions of DOS do this, but at least one
- older version failed to do it. Test your new boot disk to make sure your
- computer can boot off of it by pressing CTL-ALT-DEL. Create A:\CONFIG.SYS
- containing only "DEVICE=A:\XMS.SYS", and copy XMS.SYS to A:, then reboot.
- After your machine boots, execute "C:", "cd \NAV", and "NAV" to make sure NAV
- runs ok. If so, then it is safe to modify your C:\CONFIG.SYS to contain
- "DEVICE=C:\NAV\XMS.SYS". Use the same technique to test LIM.SYS before
- installing, if you prefer expanded memory to extended memory.
-
-
- XMS.SYS
- -------
-
- XMS.SYS emulates XMS 2.0 memory by paging to file C:\XMS20$$$.MEM, which it
- will create as needed. Install it by adding the following line to your
- CONFIG.SYS file:
- DEVICE=C:\NAV\XMS.SYS
- Application programs such as NAV use interrupt 2Fh and an XMS control function
- to access extended memory. There are three kinds of extended memory: (1) HMA,
- (2) UMB, (3) EMB. XMS.SYS provides no HMA or UMB memory, but does provide 8
- Megabytes of EMB memory. If true (non-emulated) extended memory is available
- (for example, via HIMEM.SYS), NAV will take advantage of HMA and UMB, in
- addition to EMB memory.
-
-
- LIM.SYS
- -------
-
- LIM.SYS emulates Lotus-Intel-Microsoft (LIM) 3.2 memory by paging to file
- C:\LIM32$$$.MEM, which it will create as needed. Install it by adding the
- following line to your CONFIG.SYS file:
- DEVICE=C:\NAV\LIM.SYS
- Application programs such as NAV use interrupt 67h to access expanded memory.
- LIM memory is available as a sequence of 16K pages that must be mapped to a 64K
- page frame to access them; 8 Megabytes of LIM memory is available.
-
-
- .NAV File Format Example
- ------------------------
-
- Here is a short example of an unencrypted (ASCII) .NAV file:
-
- name=EBENEZER SCROOGE FUND
- category=GROWTH
- ;comments start with a semi-colon
-
- ;blank lines are fine too
- ;here is a distribution, with "income dividends", plus short- and long-term
- ;capital gains. these are in dollars and cents per share. the date is the
- ;"X-date" or ex-dividend date. this is the first date that the effect of
- ;the distribution is reflected in the reported per-share price. you can
- ;have up to 4 decimal places.
- 12/30/61 div=.07 scg=.3025 lcg=1.73
- 1/1/60=12.75 comments can follow NAV prices too
- 2/3/60= this nav is missing, but will be interpolated
- 3/4/60=6.80
- ;here's a share split, which is fairly rare for mutual funds:
- 2/2/60 split 2 for 1
- ;here's the definition of an excluded region:
- 1/1/61 exclude
- ;in this case, all price data prior to and including 1/1/61 will be
- ;excluded from the tax efficiency calculation, because distribution
- ;data has been used to adjust the prices, rather than being included
- ;explicitly.
-
- Valid categories include:
- MAXGROWTH (aggressive growth)
- SMALLCAP
- GLOBALEQUITY ("international", "global", and "world")
- GROWTH
- GROWTHINC ("growth and income")
- INDEX
- EQUITYINC ("equity income")
- BALANCEDEQUITY (more stocks than bonds)
- BALANCEDBOND (more bonds than stocks)
- BOND
- GOLD
- SECTOR
-
-
- Unencrypting .NAV Files
- -----------------------
-
- If you need access to the ASCII price histories, use A0.EXE and A1.EXE to
- unencrypt the .NAV files. The .NAV files are encrypted in one of two ways;
- either they are encrypted so that NAV can understand them without a key (a few
- of them), or they are encrypted so that NAV requires a key to understand them
- (the majority). A0 will unencrypt the former, and A1 will unencrypt the latter.
- If you attempt to run them on the wrong type of data file, they will tell you.
- The .NAV files in DATA.ZIP which do not require a key are:
-
- BRWIX.NAV - Brandywine
- JAVTX.NAV - Janus Venture
- PRITX.NAV - T Rowe Price International Stock
- FDVLX.NAV - Fidelity Value
- LLPFX.NAV - Longleaf Partners
- VWNFX.NAV - Vanguard Windsor II
- DJIA.NAV - Dow Jones Industrial Average (index)
- SP500.NAV - S&P 500 Index
- FIIIX.NAV - Invesco Industrial Income
- TWBIX.NAV - American Century Balanced
- VWINX.NAV - Vanguard Wellesley
- NCINX.NAV - Nicholas Income
- LEXMX.NAV - Lexington Goldfund
- FBIOX.NAV - Fidelity Select Biotechnology
-
- Examples:
- A0 BRWIX.NAV BRWIX.DAT
- will create an unencrypted file called BRWIX.DAT.
- A1 ANALX.NAV ANALX.DAT
- will create an unencrypted file called ANALX.DAT.
- A0 ANALX.NAV ANALX.DAT
- will give you an error message, since ANALX.NAV requires A1, because a key is
- necessary.
-
- A1 will accept a KEY in one of three ways: (1) /KEY= on the command line, (2) a
- file called KEY in the current directory, (3) KEY= in the environment. These
- are the same three methods of supplying a key to NAV.
-
-
- Encrypting .NAV Files
- ---------------------
-
- X0.EXE and X1.EXE are programs to encrypt ASCII files; they are the inverses of
- A0 and A1. You may need to use them if, for example, you want to make some
- modifications to a .NAV data file. X0 performs "default" (non-key) encryption,
- and needs only two parameters: the names of the source and destination files.
- For example,
- X0 BRWIX.DAT BRWIX.NAV
- forms a default encryption of the ASCII file BRWIX.DAT and puts it in
- BRWIX.NAV. X1 performs key encryption, and works identically, except that a
- key must be present. If there is a KEY file or a KEY= environment variable,
- they will be used. If not, or if a different key is needed, X1 accepts a /KEY=
- parameter:
- X1 /KEY=FOO BRWIX.DAT BRWIX.NAV
-
-
- Stocks?
- -------
-
- After you register, get the encryption key, and start viewing the entire set of
- funds, you'll notice there is one for Microsoft stock. While NAV is intended
- for analysis of mutual funds, it can be used to analyze price trends on other
- securites such as individual stocks, as long as there is a price history
- measured at regular intervals, ideally weekly closing prices.
-
-
- Missing Distributions
- ---------------------
-
- You should be suspicious if you open the distribution graph and see no
- distributions. Most funds pay at least one distribution each year, usually in
- December. If you see only recent distributions it means previous distributions
- have been used to adjust prices, rather than being represented explicitly in
- the data. Funds with short histories (two years or less) may not have
- experienced enough turnover yet to require a distribution. The detailed data
- required for the most precise calculations are: the X-date (date on which the
- distribution affected the reported price), amount of distribution broken down
- by type (dividend, short- or long-term capital gain, in cents per share), and
- the reinvest price on the X-date.
-
-
- VGA
- ---
-
- While writing NAV, I found that the BIOS routines for writing dots on the
- screen were too slow. To solve this, I wrote code which writes dots on the
- screen much faster by accessing the VGA hardware directly. If you have problems
- seeing the graphs on the screen, or something weird happens with the video
- portion of the program, let me know.
-
-
- 286
- ---
-
- NAV is written in C, but with some assembly language routines for maximum speed
- and hardware access. Some 286 instructions are present, so NAV will not run on
- 8088 CPUs. NAV uses very few floating point operations; most calculations are
- done with integers. The only floating point operations are done to map the
- graph to a logarithmic scale. Therefore the display portion of NAV will run
- faster on a machine equipped with a math coprocessor. The initial data input
- and optimization calculation portion of the program will not run any faster, as
- it does no floating point calculations during that phase.
-
-
- Bugs, Etc
- ---------
-
- If you notice a bug (error in the program), let me know, with as much detail as
- you can. If a fund is in the wrong category, let me know, and why. For some of
- these funds, it can be difficult to assign them to a category.
-
-
- Did I Miss Anything?
- --------------------
-
- Is this documentation complete and easy to understand? If not, let me know what
- I left out, or didn't explain clearly enough.
-
-
- Future Releases
- ---------------
-
- I have a long list of things I'd like to do to improve NAV and add new
- features. For right now I'm keeping this list to myself, but feel free to send
- me suggestions for your favorite feature, or your favorite fund or index you'd
- like to see added.
-
-
-